package psn.kiko.mapper.business.associated;

import org.apache.ibatis.annotations.Mapper;
import psn.kiko.pojo.dto.UserRoleDTO;
import psn.kiko.pojo.vo.AllocateRoleVo;
import psn.kiko.pojo.vo.InterfaceVO;

import java.util.List;

/**
 *用户-角色中间表 DAO
 */
@Mapper
public interface UserRoleMapper{
	/**
	 * 批量更新记录的启禁状态，sql成功时可能的情况：
	 * <p style="color:#409eff;">update auth_user_role set enabled=? where user_id in(?,?) and role_id in(?,?,?)</p>
	 * <p style="color:#409eff;">update auth_user_role set enabled=? where user_id in(?,?) </p>
	 * <p style="color:#409eff;">update auth_user_role set enabled=? where role_id in(?,?,?)</p>
	 * @param userIds 用户主键集合
	 * @param roleIds 角色主键集合
	 * @param enableOrDisable 0-禁用，1-启用
	 *
	 * @return 修改记录数
	 */
	Integer batchUpdate(List<Integer> userIds,List<Integer> roleIds,Short enableOrDisable);
	
	/**
	 * 批量删除记录，sql成功时可能的情况：
	 * <p style="color:red">delete from auth_user_role where user_id in (?,?) and role_id in (?,?,?)</p>
	 * <p style="color:red">delete from auth_user_role where user_id in (?,?)</p>
	 * <p style="color:red">delete from auth_user_role where role_id in (?,?,?)</p>
	 * @param userIds 用户主键集合
	 * @param roleIds 角色主键集合
	 *
	 * @return 删除记录数
	 */
	Integer batchDelete(List<Integer> userIds,List<Integer> roleIds);
	
	/**
	 * 批量插入记录，sql成功时可能的情况：
	 * <p style="color:#008800">insert into auth_user_role(user_id,role_id) values(?,?),(?,?),...</p>
	 * <p style="color:#008800">insert into auth_user_role(user_id,role_id) values(?,?)</p>
	 * @param userIdsRoleIds 用户主键-角色主键 集合
	 *
	 * @return 增加记录数
	 */
	Integer batchInsert(List<UserRoleDTO> userIdsRoleIds);
	
	List<AllocateRoleVo> selectAllocatedRolesByUserId(Integer userId);
	
	List<AllocateRoleVo> selectUnallocatedRolesByUserId(Integer userId);
	
	List<InterfaceVO> selectInterfacesByUserId(Integer userId);
	
	psn.kiko.pojo.entity.system.UserRoleEntity selectByUserIdAndRoleId(Integer userId,Integer roleId);
}
